package device

import (
	"time"
)

type InstructionType int

const (
	InstructionRead  InstructionType = iota
	InstructionWrite InstructionType = iota
)

// 指令状态枚举
type InstructionStatus int

const (
	StatusPending    InstructionStatus = iota // 等待执行
	StatusProcessing                          // 执行中
	StatusCompleted                           // 完成
	StatusTimeout                             // 超时
)

type SInstruction struct {
	ID          string             `json:"id"`           // 指令唯一ID
	Instruction InstructionType    `json:"-"`            // 指令类型
	Status      InstructionStatus  `json:"-"`            // 执行状态
	SentAt      time.Time          `json:"sent_at"`      // 下发时间
	CompletedAt time.Time          `json:"completed_at"` // 完成时间
	Value       map[string]string  `json:"value"`        // 返回数据
	Result      map[string]string  `json:"result"`       // 等待返回通道
	ResultChan  chan *SInstruction `json:"-"`            // 响应通道（带1缓冲，不参与序列化）
	Timeout     time.Duration      `json:"timeout"`      // 超时时间
	IsRt        bool               `json:"is_rt"`        // 实时指令
}
